package cn.iocoder.yudao.module.hs.service.receiveorderdetail;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.hs.controller.admin.receiveorderdetail.vo.ReceiveOrderDetailPageReqVO;
import cn.iocoder.yudao.module.hs.controller.admin.receiveorderdetail.vo.ReceiveOrderDetailRespVO;
import cn.iocoder.yudao.module.hs.controller.admin.receiveorderdetail.vo.ReceiveOrderDetailSaveReqVO;
import cn.iocoder.yudao.module.hs.dal.dataobject.receiveorderdetail.ReceiveOrderDetailDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 收货单明细 Service 接口
 *
 * @author 航盛
 */
public interface ReceiveOrderDetailService {

    /**
     * 创建收货单明细
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createReceiveOrderDetail(@Valid ReceiveOrderDetailSaveReqVO createReqVO);

    /**
     * 更新收货单明细
     *
     * @param updateReqVO 更新信息
     */
    void updateReceiveOrderDetail(@Valid ReceiveOrderDetailSaveReqVO updateReqVO);

    /**
     * 删除收货单明细
     *
     * @param id 编号
     */
    void deleteReceiveOrderDetail(Long id);

    /**
     * 获得收货单明细
     *
     * @param id 编号
     * @return 收货单明细
     */
    ReceiveOrderDetailDO getReceiveOrderDetail(Long id);

    /**
     * 获得收货单明细分页
     *
     * @param pageReqVO 分页查询
     * @return 收货单明细分页
     */
    PageResult<ReceiveOrderDetailRespVO> getReceiveOrderDetailPage(ReceiveOrderDetailPageReqVO pageReqVO);

    /**
     * 获得收货单明细
     * @param materialCode
     * @return
     */
    ReceiveOrderDetailDO getReceiveOrderDetail(String materialCode);

    /**
     * 获得收货单明细
     * @param trayCode
     * @return
     */
    List<ReceiveOrderDetailDO> getReceiveOrderDetailList(String trayCode);
}